package edu.pku.sei.act.model.mote;

import edu.pku.sei.act.model.common.ArchiModelConst;
import edu.pku.sei.act.mote.myenum.StatusEnum;
import edu.pku.sei.gmp.model.concept.GMPModelElement;
import edu.pku.sei.gmp.model.util.GMPTypedList;
import edu.pku.sei.gmp.properties.annotation.GMPAnnotation;

public class Mote extends GMPModelElement {

	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.Name",
			name = ArchiModelConst.MOTE_NAME,
			category = "Model",
			getter = "getName",
			setter = "setName",
			visible = true,
			serialize = true
			)
	private String name;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.Status",
			name = ArchiModelConst.MOTE_STATUS,
			category = "Model",
			getter = "getStatus",
			setter = "setStatus",
			visible = true,
			serialize = true
			)
	private StatusEnum Status;
	

	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_RADIO",
			name = ArchiModelConst.MOTE_RADIO,
			category = "Model",
			getter = "getRadio",
			setter = "setRadio",
			visible = false,
			serialize = true,
			reference = false
			)
	/*@GMPListAnnotation(
			allowedType = Radio.class,
			typeString = ArchiModelConst.__RADIO__
			)*/
	private Radio radio;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_LIP",
			name = ArchiModelConst.MOTE_LIP,
			category = "Model",
			getter = "getLIP",
			setter = "setLIP",
			visible = false,
			serialize = true,
			reference = false
			)
	private LIP Lip;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_TIMER",
			name = ArchiModelConst.MOTE_TIMER,
			category = "Model",
			getter = "getTimer",
			setter = "setTimer",
			visible = false,
			serialize = true,
			reference = false
			)
	private Timer timer;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_SIMPLRDEVICE",
			name = ArchiModelConst.MOTE_SIMPLRDEVICE,
			category = "Model",
			getter = "getSimpleSevice",
			setter = "setSimpleDevice",
			visible = false,
			serialize = true,
			reference = false
			)
	private SimpleDevice simpleDevice;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_TASK",
			name = ArchiModelConst.MOTE_TASK,
			category = "Model",
			getter = "getTask",
			setter = "setTask",
			visible = false,
			serialize = true,
			reference = false
			)
	private Task task;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_DATA",
			name = ArchiModelConst.MOTE_DATA,
			category = "Model",
			getter = "getData",
			setter = "setData",
			visible = true,
			serialize = true,
			reference = false
			)
	/*@GMPListAnnotation(
			allowedType = Data.class,
			typeString = ArchiModelConst.__DATA__
			)*/
	private Data data;
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_CONVERSATION",
			name = ArchiModelConst.MOTE_CONVERSATION,
			category = "Model",
			getter = "getConversation",
			setter = "setConversation",
			visible = false,
			serialize = true,
			reference = false
			)
	private GMPTypedList<Conversation> conversation = new GMPTypedList<Conversation>(
				ArchiModelConst.MOTE_CONVERSATION, GMPTypedList.BAG, this, Conversation.class, true);
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_PROPERTY",
			name = ArchiModelConst.MOTE_PROPERTY,
			category = "Model",
			getter = "getProperty",
			setter = "setProperty",
			visible = true,
			serialize = true,
			reference = false
			)
	private GMPTypedList<UserProperty> property = new GMPTypedList<UserProperty>(
				ArchiModelConst.MOTE_PROPERTY, GMPTypedList.BAG, this, UserProperty.class, true);
	
	@GMPAnnotation(
			id = "edu.pku.sei.act.model.Mote.MOTE_USEROPERATION",
			name = ArchiModelConst.MOTE_USEROPERATION,
			category = "Model",
			getter = "getUserOperation",
			setter = "setUserOperation",
			visible = false,
			serialize = true,
			reference = false
			)
	private GMPTypedList<UserOperation> userOperation = new GMPTypedList<UserOperation>(
				ArchiModelConst.MOTE_USEROPERATION, GMPTypedList.BAG, this, UserOperation.class, true);
	

	public String getName() {
		return name;
	}
	
	public void setName(String Name) {
		this.name = Name;
	}
	
	public StatusEnum getStatus() {
		return Status;
	}
	
	public void setStatus(StatusEnum Status) {
		this.Status = Status;
	}
	

	public Radio getRadio() {
		return radio;
	}
	
	public void setRadio(Radio radio) {
		this.radio = radio;
	}
	
	public LIP getLIP() {
		return Lip;
	}
	
	public void setLIP(LIP MOTE_LIP) {
		this.Lip = MOTE_LIP;
	}
	
	public Timer getTimer() {
		return timer;
	}
	
	public void setTimer(Timer MOTE_TIMER) {
		this.timer = MOTE_TIMER;
	}
	
	public SimpleDevice getSimplerDevice() {
		return simpleDevice;
	}
	
	public void setSimpleDevice(SimpleDevice MOTE_SIMPLRDEVICE) {
		this.simpleDevice = MOTE_SIMPLRDEVICE;
	}
	
	public Task getTask() {
		return task;
	}
	
	public void setTask(Task MOTE_TASK) {
		this.task = MOTE_TASK;
	}
	
	public Data getData() {
		return data;
	}
	
	public void setData(Data data) {
		this.data = data;
	}
	
	public GMPTypedList<Conversation> getConversation() {
		return conversation;
	}
	
	public void setConversation(GMPTypedList<Conversation> MOTE_CONVERSATION) {
		this.conversation = MOTE_CONVERSATION;
	}
	
	public GMPTypedList<UserProperty> getProperty() {
		return property;
	}
	
	public void setProperty(GMPTypedList<UserProperty> MOTE_PROPERTY) {
		this.property = MOTE_PROPERTY;
	}
	
	public GMPTypedList<UserOperation> getUserOperation() {
		return userOperation;
	}
	
	public void setUserOperation(GMPTypedList<UserOperation> MOTE_USEROPERATION) {
		this.userOperation = MOTE_USEROPERATION;
	}
	

}